#!/bin/bash

# 内容审核算法服务部署脚本

# 设置变量
SERVICE_NAME="content_audit_service"
SERVICE_DIR="/www/wwwroot/content_audit"
PYTHON_ENV="/www/server/python_manager/versions/3.10.0/bin/python"
PID_FILE="/tmp/${SERVICE_NAME}.pid"
LOG_FILE="/www/wwwroot/logs/${SERVICE_NAME}.log"

# 创建日志目录
mkdir -p /www/wwwroot/logs

# 函数：启动服务
start_service() {
    echo "启动内容审核服务..."
    cd $SERVICE_DIR
    
    # 检查是否已经在运行
    if [ -f $PID_FILE ]; then
        PID=$(cat $PID_FILE)
        if ps -p $PID > /dev/null 2>&1; then
            echo "服务已经在运行，PID: $PID"
            return 1
        else
            rm -f $PID_FILE
        fi
    fi
    
    # 启动服务
    nohup $PYTHON_ENV start.py > $LOG_FILE 2>&1 &
    echo $! > $PID_FILE
    
    echo "服务启动成功，PID: $(cat $PID_FILE)"
    echo "日志文件: $LOG_FILE"
}

# 函数：停止服务
stop_service() {
    echo "停止内容审核服务..."
    if [ -f $PID_FILE ]; then
        PID=$(cat $PID_FILE)
        if ps -p $PID > /dev/null 2>&1; then
            kill $PID
            sleep 2
            if ps -p $PID > /dev/null 2>&1; then
                kill -9 $PID
            fi
            rm -f $PID_FILE
            echo "服务已停止"
        else
            echo "服务未运行"
            rm -f $PID_FILE
        fi
    else
        echo "PID文件不存在，服务可能未运行"
    fi
}

# 函数：重启服务
restart_service() {
    stop_service
    sleep 2
    start_service
}

# 函数：查看服务状态
status_service() {
    if [ -f $PID_FILE ]; then
        PID=$(cat $PID_FILE)
        if ps -p $PID > /dev/null 2>&1; then
            echo "服务正在运行，PID: $PID"
            echo "内存使用: $(ps -p $PID -o rss= | awk '{print $1/1024 "MB"}')"
            echo "CPU使用: $(ps -p $PID -o %cpu= | awk '{print $1"%"}')"
        else
            echo "服务未运行（PID文件存在但进程不存在）"
            rm -f $PID_FILE
        fi
    else
        echo "服务未运行"
    fi
}

# 主逻辑
case "$1" in
    start)
        start_service
        ;;
    stop)
        stop_service
        ;;
    restart)
        restart_service
        ;;
    status)
        status_service
        ;;
    *)
        echo "用法: $0 {start|stop|restart|status}"
        exit 1
        ;;
esac

exit 0
